const path = require("path");
const opt = {
	// proxyTarget: "http://test-api.yo-bu.com",
	proxyTarget: "https://api.yo-bu.com",
	hostArr: ["localhost"],
	hostIndex: 0,
};

module.exports = {
	// 部署应用包时的基本 URL,从 Vue CLI 3.3 起已弃用baseUrl
	// publicPath: process.env.NODE_ENV !== "production" ? "./" : '/',
	// publicPath: process.env.NODE_ENV !== "production" ? "/" : "/", //本地开发用
	publicPath: process.env.NODE_ENV !== "production" ? "/" : "/", //本地开发用

	// build时构建文件的目录 构建时传入 --no-clean 可关闭该行为
	outputDir: "dist_pc",

	// build时放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
	// assetsDir: "dist_pc",
	assetsDir: "",

	// 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。
	indexPath: "index.html",

	// 默认在生成的静态资源文件名中包含hash以控制缓存
	filenameHashing: true,

	// 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码 (在生产构建时禁用 eslint-loader)
	lintOnSave: process.env.NODE_ENV !== "production",

	// 是否使用包含运行时编译器的 Vue 构建版本
	runtimeCompiler: false,

	// Babel 显式转译列表
	transpileDependencies: [],

	// 如果你不需要生产环境的 source map，可以将其设置为 false 以加速生产环境构建
	productionSourceMap: false,

	// 设置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 标签的 crossorigin 属性（注：仅影响构建时注入的标签）
	crossorigin: undefined,

	// 在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 标签上启用 Subresource Integrity (SRI)
	integrity: false,

	// 如果这个值是一个对象，则会通过 webpack-merge 合并到最终的配置中
	// 如果你需要基于环境有条件地配置行为，或者想要直接修改配置，那就换成一个函数 (该函数会在环境变量被设置之后懒执行)。该方法的第一个参数会收到已经解析好的配置。在函数内，你可以直接修改配置，或者返回一个将会被合并的对象

	configureWebpack: (config) => {
		return {
			name: "呦步",
			resolve: {
				// 配置解析别名
				extensions: [".js", ".vue", ".json"],
				alias: {
					"@": path.resolve(__dirname, "./src"),
					"@img": path.resolve(__dirname, "./src/assets/img"),
					vue$: "vue/dist/vue.esm.js",
					api: path.resolve(__dirname, "../src/api"),
				},
			},

			externals: {
				// 'echarts': 'echarts',
			},

			plugins: [
				// new PrerenderSPAPlugin({
				// 	staticDir: path.join(__dirname, 'dist_pc'),
				// 	routes: ['/'], // 预渲染首页
				// 	renderer: new Renderer({
				// 		headless: true,
				// 		// 如果你的应用程序使用了Vue路由器的history模式，需要将这个设置为true
				// 		renderAfterDocumentEvent: 'render-event',
				// 	})
				// })
			],
		};
	},

	devServer: {
		// host: 'localhost',
		hot: true,
		// host: opt.hostArr[opt.hostIndex],
		// host: 'yobu-check.com', // 设置自定义域名
		// 允许外部设备访问
		host: 'yobu-check.com', // 直接设置主机名为目标域名
		open: true, // 启用自动打开浏览器
		disableHostCheck: true,
		port: 80,
		https: false,
		overlay: {
			warnings: false,
			errors: true,
		},
		// proxy: {
		// 	"/api": {
		// 		target: opt.proxyTarget,
		// 		ws: true,
		// 		changeOrigin: true,
		// 		pathRewrite: {
		// 			"^/api": "",
		// 		},
		// 	},
		// },
	},

	css: {},

	pluginOptions: {
		"style-resources-loader": {
			preProcessor: "less",
			patterns: [path.resolve(__dirname, "./src/styles/variable.less")], // 引入全局样式变量
		},
	},

	chainWebpack: (config) => {
		//设置图片不转base64格式  图片少 且对图片质量要求高
		const imagesRule = config.module.rule("images");
		imagesRule.uses.clear(); //清除原本的images loader配置
		imagesRule
			.test(/\.(jpg|gif|png|svg)$/)
			.exclude.add(path.join(__dirname, "../node_modules")) //去除node_modules里的图片转base64配置
			.end()
			.use("url-loader")
			.loader("url-loader")
			.options({
				name: "img/[name].[hash:8].[ext]",
				limit: 1
			});
	},
};